// 模拟CLI提示词切换测试
const { ChatManager } = require('../dist/core/chat.js');
const { promptManager } = require('../dist/utils/prompt-manager.js');

// 模拟事件处理器
const mockHandlers = {
  onStreamStart: () => {},
  onContent: () => {},
  onStreamComplete: () => {},
  onError: () => {},
  onDebug: () => {}
};

async function testPromptCLI() {
  console.log('=== 🎯 CLI提示词切换测试 ===\n');

  // 创建ChatManager实例
  const chatManager = new ChatManager(mockHandlers);

  // 显示当前提示词
  console.log('1. 当前提示词信息:');
  const currentPrompt = chatManager.getCurrentPrompt();
  console.log(`标题: ${currentPrompt?.title || '无'}`);
  console.log(`内容长度: ${currentPrompt?.content.length || 0} 字符`);
  console.log(`内容预览: ${currentPrompt?.content.substring(0, 100) || '无'}...\n`);

  // 显示所有可用提示词
  console.log('2. 所有可用提示词:');
  console.log(chatManager.listPrompts());

  // 测试切换提示词
  console.log('3. 切换到编程助手:');
  chatManager.changePromptByTitle('编程助手');
  const newPrompt = chatManager.getCurrentPrompt();
  console.log(`✅ 已切换到: ${newPrompt?.title}`);
  console.log(`新内容预览: ${newPrompt?.content.substring(0, 80)}...\n`);

  // 测试系统提示词生成
  console.log('4. 生成的完整系统提示词:');
  const systemPrompt = chatManager.getSystemPrompt();
  console.log(`总长度: ${systemPrompt.length} 字符`);
  console.log('包含内容:');
  console.log('- 提示词内容: ✓');
  console.log(`- 工具调用说明: ${systemPrompt.includes('工具调用格式') ? '✓' : '✗'}`);
  console.log(`- 变量替换: ${systemPrompt.includes('2025') ? '✓' : '✗'}\n`);

  // 测试重新加载
  console.log('5. 测试重新加载提示词:');
  chatManager.reloadPrompts();
  console.log('✅ 重新加载完成\n');

  // 显示可用变量
  console.log('6. 可用变量列表:');
  const variables = promptManager.getAvailableVariables();
  Object.entries(variables).forEach(([key, desc]) => {
    console.log(`  {{${key}}} - ${desc}`);
  });

  console.log('\n✅ CLI提示词系统测试完成！');
}

testPromptCLI().catch(console.error);
